Data communication networks may include various switches, routers, hubs, and other devices coupled to and configured to receive data and forward the data on the network. These devices will be referred to herein as “network elements.” A network element is generally not a consumer of the data, but rather is used to receive and forward data so that the data may pass through the network. Data is communicated through a network by enabling the network elements to pass protocol data units, such as frames, packets, cells or segments, between each other over communication links. A particular protocol data unit may be handled by multiple network elements and cross multiple communication links as it travels between its source and its destination over the network.
The various network elements on the communication network communicate with each other using predefined sets of rules, referred to herein as protocols. Different protocols are used to govern different aspects of the communication, such as how signals should be formed for transmission between the network elements, various aspects of what the protocol data units should look like, how protocol data units should be handled or routed through the network by the network elements, and how information such as routing information should be exchanged between the network elements.
In Ethernet network architectures, devices connected to the network compete for the ability to use shared telecommunications paths at any given time. Where multiple bridges or nodes are used to interconnect network segments, multiple potential paths to the same destination often exist. The benefit of this architecture is that it provides path redundancy between bridges and permits capacity to be added to the network in the form of additional links. However to prevent loops from being formed, a spanning tree was generally used to restrict the manner in which traffic was broadcast on the network. Since routes were learned by broadcasting a frame and waiting for a response, and since both the request and response would follow the spanning tree, most if not all of the traffic would follow the links that were part of the spanning tree. This often led to over utilization of the links that were on the spanning tree and underutilization of the links that weren't part of the spanning tree.
To overcome some of the limitations inherent in Ethernet networks, a Provider Link State Bridging network (one example of a link state protocol controlled Ethernet network) was disclosed in application Ser. No. 11/537,775, filed Oct. 2, 2006, entitled “Provider Link State Bridging,” the content of which is hereby incorporated herein by reference. PLSB is further described in U.S. patent application Ser. No. 11/702,263, filed Feb. 5, 2007, entitled MULTICAST IMPLEMENTATION IN A LINK STATE PROTOCOL CONTROLLED ETHERNET NETWORK, the content of which is hereby incorporated herein by reference.
PLSB uses a link state protocol such as Intermediate System to Intermediate System (ISIS) to enable the network elements to exchange link state routing information. The nodes use the link state routing information to compute shortest paths through the network. Because shortest path routing is used, a shortest path tree may be computed from each source node to avoid the use of the Spanning Tree Protocol, so that link utilization may be increased on the network.
MPLS networks may be built on Ethernet networks or other communication networks. In an MPLS network, a signaling protocol is used to establish label switched paths through the network, so that traffic may be forwarded across the network on any desired path. In operation, an ingress node (label edge router or LER for short) will receive a packet and determine which path the packet should take through the network. The LER will apply an outer label to the packet and forward it on the Label Switched Path (LSP). Label Switch Routers (LSRs) on the LSP will receive the packet, remove the outer label, use the outer label to determine a next hop for the packet, apply a new outer label to the packet, and forward the packet on the network to the next hop. This outer label will thus be replaced at each hop as the packet passes through the network until the packet reaches its destination.
MPLS establishes unicast connectivity everywhere by establishing Label Switched Paths between pairs of nodes on the MPLS network. Setup of the label switched paths requires labels to be distributed to each of the nodes on the path, so that the nodes can agree on what labels will be used to enable the packet to follow the path through the network. One protocol that is commonly used to establish label switched paths through an MPLS network is commonly referred to as Label Distribution Protocol (LDP), although other signaling protocols have been developed as well. Using a signaling mechanism, labels are established along the label switched paths so that label switch routers can read a label, determine an output for the packet based on the label, and apply a new label to forward the packet along the path through the network. The signaling protocol is used to install the labels and other appropriate forwarding state for the traffic along the path. The Label Switched Paths define unicast connectivity on the MPLS network, which is generally set up in advance indiscriminately.
MPLS also has several different types of labels that are commonly used. Generally, an outer label will be used to define the forwarding context for a particular packet. This label is often replaced hop-by-hop as the packet traverses across the network. Once the packet has reached an area where the forwarding context is implicit, this outer label may be popped off the packet which is commonly referred to as pentultimate hop popping. Forwarding context is commonly deemed implicit at least one hop away from the final destination of the packet and, hence, the term pentultimate has been used to refer to this process. However, the outer label may be removed at any point along the network path where the route becomes implicit. The outer labels are node-specific, which means that they have meaning to a particular node on the network. The outer labels are not globally unique values, but rather may be reused at different parts of the network.
MPLS enables multiple labels to be stacked onto a given packet. Frequently, as mentioned above, the outer label is used to specify forwarding context for the packet. An inner label (Pseudo Wire label) is frequently used to enable the nodes to demultiplex the packet at the egress from the Label Switched Path. To do this, the destination node will assign a Pseudo Wire label for each service instance being handled by that destination node. The destination also will then instruct the other nodes on the network to apply the Pseudo Wire labels to the packets when they enter the network, so that the egress node can use the inner MPLS Pseudo Wire label to determine how to forward the packet. Thus, the egress node will assign Pseudo Wire labels to its service instances and coordinate with the ingress nodes to apply those Pseudo Wire labels to traffic entering the network. Like the outer labels, the inner Pseudo Wire labels are not network unique, but rather are only unique to the particular egress node. Use of inner labels enables many different flows of data to be multiplexed for transmission over a given LSP on the MPLS network.
In operation, a LER will apply both the inner Pseudo Wire label and the outer forwarding label to a packet at the ingress to the MPLS network. The outer label will be used to forward the packet across the network and the inner label may be used by the destination node to forward the packet off the MPLS network. This enables a single lookup to be performed by the ingress LER and enables label switching to be used to forward the packet across the MPLS network and, by the destination node, off of the MPLS network e.g. to a client network.
Once unicast connectivity has been established, through the establishment of a full set of LSPs through the network, multicast connectivity may be built on top of the MPLS network. Unfortunately, building multicast connectivity requires use of a different signaling protocol, which makes multicast slower to set up and more error prone. For example, nodes use a protocol such as Internet Group Management Protocol (IGMP) to join and leave multicast groups, which causes the nodes to add nodes and remove nodes from the multicast tree. As nodes join and leave multicast groups, multicast connectivity is built on the MPLS nodes. Destination nodes that would like to subscribe to the multicast send out a join message and the intermediate nodes use the join messages to determine whether forwarding state should be added for the particular multicast. Building multicast trees one at a time in this manner is time consuming and computationally intensive. Accordingly, it would be advantageous to provide a new way to implement multicast on an MPLS network.